package com.xinjian.service;

import com.xinjian.netty.ChatMsg;
import com.xinjian.pojo.Users;
import com.xinjian.pojo.vo.FriendRequestVO;
import com.xinjian.pojo.vo.MyFriendsVO;

import java.util.List;

/**
 * app用户接口
 *
 * @author yyb
 * @create 2018-12-03-20:31
 */
public interface UserService {
    /**
     * 判断用户名是否存在
     *
     * @param userName
     * @return
     */
    public Boolean queryUserNameIsExist(String userName);

    /**
     * 查询用户是否存在
     *
     * @param userName
     * @param pwd
     * @return
     */
    public Users queryUserForLogin(String userName, String pwd) throws Exception;

    /**
     * 保存
     *
     * @param user
     */
    public Users save(Users user) throws Exception;

    /**
     * 修改用户信息
     *
     * @param user
     */
    public Users updateUsersInfo(Users user);


    /**
     * 搜索朋友的前置条件
     *
     * @param myUserId
     * @param friendUserName
     * @return
     */
    public Integer preconditionSearchFriends(String myUserId, String friendUserName);

    /**
     * 根据用户名查询用户对象
     *
     * @param userName
     * @return
     */
    public Users queryUserInfonByUserName(String userName);

    /**
     * 查询好友列表
     *
     * @param userId
     * @return
     */
    public List<MyFriendsVO> queryMyFriends(String userId);

    /**
     * 添加好友请求记录，保存到数据库
     *
     * @param myUserId
     * @param friendUserName
     * @return
     */
    public void sendFriendRequest(String myUserId, String friendUserName);

    /**
     * 查询好友请求
     *
     * @param acceptUserId
     * @return
     */
    public List<FriendRequestVO> queryFriendRequestList(String acceptUserId);

    /**
     * 删除好友请求
     *
     * @param sendUserId
     * @param acceptUserId
     */
    public void deleteFriendRequest(String sendUserId, String acceptUserId);

    /**
     * 通过好友请求 1.保存好友；2.逆向保存；3.删除好友请求
     *
     * @param sendUserId
     * @param acceptUserId
     */
    public void passFriendRequest(String sendUserId, String acceptUserId);

    /**
     * 保存聊天消息到数据库
     *
     * @param chatMsg
     * @return
     */
    public String saveMsg(ChatMsg chatMsg);

    /**
     * 批量签收消息
     *
     * @param msgIdList
     */
    public void updateMsgSigned(List<String> msgIdList);

    /**
     * 获取未签收的消息列表
     *
     * @param acceptUserId
     */
    public List<com.xinjian.pojo.ChatMsg> getUnReadMsgList(String acceptUserId);

}
